iT邦幫忙

DAY 25
0

從0開始用Cocos2d for iPhone寫App Game的30天系列 第 25

[Day25] 遊戲Touch & Push開發 - 5

  • 分享至 

  • xImage
  •  

前面實作Ready!!Go!!的遊戲開始動畫,並加在場景之中。
但是發現Ready!!Go!!動畫在執行的時候,遊戲計時也開始倒數,這樣的流程似乎有些奇怪。

現在就讓我們來修改一下遊戲流程吧。

透過Xcode開啟TouchAndPush專案,編輯GamePlayScene.m。

幾秒後執行指定方法一次
// selector: 執行的方法
// delay: 幾秒後執行
- (CCTimer *)scheduleOnce:(SEL)selector delay:(CCTime)delay

從xxx容器移除ooo物件
// child: 被移除的物件
- (void)removeChild:(CCNode *)child

GamePlayScene.m編輯如下:

增加一個BOOL作為判斷是否執行完遊戲開始動畫
@interface GamePlayScene () {
// =======================
// 程式省略...
// =======================
CCLabelTTF *_gameStartLabel;
BOOL isGameReady;
}
@end

當進入遊戲場景自動isGameReady設為NO,並且在兩秒後執行gameStart方法。
- (void)didLoadFromCCB {
// =======================
// 程式省略...
// =======================
_gameStartLabel = (CCLabelTTF *)[CCBReader load:@"GameStartLabel"];
_gameStartLabel.position = ccp(290, 200);
[self addChild:_gameStartLabel];

isGameReady = NO;
[self scheduleOnce:@selector(gameStart) delay:2.0f];
}

當遊戲開始動畫沒結束(isGameReady == NO)就不執行秒數倒數。
- (void)update:(CCTime)delta {
if (isGameReady == NO) {
return;
}
// =======================
// 程式省略...
// =======================
}

當遊戲開始動畫沒結束(isGameReady == NO)就不讓藍色小人移動。
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if (isGameReady == NO) {
return;
}
// =======================
// 程式省略...
// =======================
}

當2秒過後(遊戲開始前動畫結束)將isGameReady設為YES,並且將_gameStartLabel標籤從場景中移除。
- (void)gameStart {
isGameReady = YES;
[self removeChild:_gameStartLabel];
}

這樣就能透過isGameReady判斷動畫,執行結果如下:


上一篇
[Day24] 遊戲Touch & Push開發 - 4
下一篇
[Day26] 遊戲Touch & Push開發 - 6
系列文
從0開始用Cocos2d for iPhone寫App Game的30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言